package main

import (
	"fmt"
	"sync"
)

var (
	// 序列号
	seq int64
	countGuard sync.Mutex
)

// 序列号生成器
func GenID() int64 {

	// 尝试原子的增加序列号
    countGuard.Lock()
    defer countGuard.Unlock()
	seq++
	return seq
}

func main() {

	// 10个并发序列号生成
	for i := 0; i < 10; i++ {
		go GenID()
	}

	fmt.Println(GenID())
}
